package com.dp.server.entities;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.envers.Audited;

import com.dp.client.dto.ConexionDTO;

@Entity
public class Conexion {
	private int id;
	private int idOrigen;
	private int idDestino;
	private int duracion;
	private int capacidad;
	private boolean eliminado;
	private Date horaSalida;
	private boolean[] diasActivos;
	private String descripcion;

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public int getCapacidad() {
		return capacidad;
	}

	public void setCapacidad(int capacidad) {
		this.capacidad = capacidad;
	}

	public int getDuracion() {
		return duracion;
	}

	public void setDuracion(int duracion) {
		this.duracion = duracion;
	}

	public int getIdOrigen() {
		return idOrigen;
	}

	public void setIdOrigen(int idOrigen) {
		this.idOrigen = idOrigen;
	}

	public int getIdDestino() {
		return idDestino;
	}

	public void setIdDestino(int idDestino) {
		this.idDestino = idDestino;
	}

	public boolean isEliminado() {
		return eliminado;
	}

	public Date getHoraSalida() {
		return horaSalida;
	}

	public void setHoraSalida(Date horaSalida) {
		this.horaSalida = horaSalida;
	}

	public boolean[] getDiasActivos() {
		return diasActivos;
	}

	public void setDiasActivos(boolean[] diasActivos) {
		this.diasActivos = diasActivos;
	}

	public void setEliminado(boolean eliminado) {
		this.eliminado = eliminado;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	public int getId() {
		return id;
	}

	public Conexion() {
	}

	public Conexion(int id, int idOrigen, int idDestino, boolean eliminado,
			Date horaSalida, boolean[] diasActivos) {
		this.idOrigen = idOrigen;
		this.idDestino = idDestino;
		this.id = id;
		this.eliminado = eliminado;
		this.horaSalida = horaSalida;
		this.diasActivos = diasActivos;
	}

	public Conexion(ConexionDTO conexion) {
		this.idOrigen = conexion.idOrigen;
		this.idDestino = conexion.idDestino;
		this.id = conexion.id;
		this.eliminado = false;
		this.horaSalida = conexion.horaSalida;
		this.diasActivos = conexion.diasActivos;
		this.descripcion = conexion.descripcion;
		this.capacidad = conexion.capacidad;
		this.duracion = conexion.duracion;
	}

	public ConexionDTO extractDTO() {
		ConexionDTO ans = new ConexionDTO();
		ans.idOrigen = this.idOrigen;
		ans.idDestino = this.idDestino;
		ans.id = this.id;
		ans.horaSalida = this.horaSalida;
		ans.diasActivos = this.diasActivos;
		ans.descripcion = this.descripcion;
		ans.capacidad = this.capacidad;
		ans.duracion = this.duracion;
		ans.ultimaCreacionVuelos = null;
		return ans;
	}
}
